/*
 * Copyright 2013 floreysoft GmbH (www.floreysoft.net)
 *
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */
package com.floreysoft.gwt.drive.client.realtime;

import com.floreysoft.gwt.drive.client.utils.JavaScriptUtils;

/**
 * Events fired by the document or collaborative objects.
 */
public enum EventType implements JavaScriptEnum<String> {
	TEXT_INSERTED("TEXT_INSERTED"),
	TEXT_DELETED("TEXT_DELETED"),
	COLLABORATOR_JOINED("COLLABORATOR_JOINED"),
	COLLABORATOR_LEFT("COLLABORATOR_LEFT"),
	DOCUMENT_SAVE_STATE_CHANGED("DOCUMENT_SAVE_STATE_CHANGED"),
	OBJECT_CHANGED("OBJECT_CHANGED"),
	REFERENCE_SHIFTED("REFERENCE_SHIFTED"),
	VALUES_ADDED("VALUES_ADDED"),
	VALUES_REMOVED("VALUES_REMOVED"),
	VALUES_SET("VALUES_SET"),
	VALUE_CHANGED("VALUE_CHANGED"),
	UNDO_REDO_STATE_CHANGED("UNDO_REDO_STATE_CHANGED");

	private final String value;

	private EventType(String value) {
		this.value = value;
	}

	@Override
	public String getValue() {
		return JavaScriptUtils.enumValue("EventType", value);
	}

	/**
	 * Finds the action by value
	 * 
	 * @param value
	 *            The value
	 * @return The action
	 */
	public static EventType findByValue(String value) {
		for (EventType action : EventType.values()) {
			if (action.getValue().equals(value)) {
				return action;
			}
		}

		return null;
	}
}
